#!/bin/bash
get_xfyun_params() {
    clear
    echo -e "\033[31m由于目前版本,语音识别只支持讯飞，所以你没有更多选择\033[0m"
    echo -e "\033[31m但你可以在安装完成后通过脚本的高级选项去更改大语言模型和语音合成\033[0m"
    echo -e "\033[32m 接下来你只需输入讯飞参数进行安装\033[0m"
    echo -e "\033[36m------------------------------------------------------------------------------\033[0m"
    echo -e "\033[32m请输入讯飞的参数：\033[0m"
    read -p "appid: " appid
    read -p "apiSecret: " apiSecret
    read -p "apiKey: " apiKey
    read -p "请输入外网端口：" external_port
    # 将讯飞的参数保存到 config.txt 文件中
    echo "appid=$appid" > ../config.txt
    echo "apiSecret=$apiSecret" >> ../config.txt
    echo "apiKey=$apiKey" >> ../config.txt
}

create_index_js() {
    # 创建 index.js 文件并保存参数
cat > ../index.js <<EOF
const espAi = require("esp-ai"); 
const config = { 
    gen_client_config: ()=>({

        // 调用讯飞语音识别
        iat_server: "xun_fei",
        iat_config: {
            // 讯飞：https://console.xfyun.cn/services/iat  。打开网址后，右上角三个字段复制进来即可。
            appid: "${appid}",
            apiSecret: "${apiSecret}",
            apiKey: "${apiKey}", 
        },

        // 调用火山引擎LLM
        llm_server: "xun_fei",
        llm_config: {
            // 1. 注册：https://console.volcengine.com/ark
            // 1. 开通: https://console.volcengine.com/ark/region:ark+cn-beijing/openManagement?LLM=%7B%7D&tab=LLM
            // 2. 创建接入点: https://console.volcengine.com/ark/region:ark+cn-beijing/endpoint
            appid: "${appid}",
            apiSecret: "${apiSecret}",
            apiKey: "${apiKey}", 
            llm: "v4.0",
        },

        // 调用火山引擎TTS
        tts_server: "xun_fei",
        tts_config: {
            // 1. 注册：https://console.volcengine.com/speech/app
            // 2. 音色开通： https://console.volcengine.com/speech/service/8?AppID=6359932705
            // 3. 授权： xxx
            // 服务接口认证信息
            appid: "${appid}",
            apiSecret: "${apiSecret}",
            apiKey: "${apiKey}", 
        },


    })
};

const espAiIns = espAi(config);

// 在合适的时机可以调用方法来在服务端实现设备操作
// espAiIns.restart("[device_id]") // 重启设备
// espAiIns.tts("[device_id]", "你好啊")   // 让设备说话
// ...
EOF

}



pull_image() {
    echo -e "\033[32m拉取ESP-AI镜像\033[0m"
    if docker pull 2362400196/espai:latest; then
        echo -e "\033[32m镜像拉取成功。\033[0m"
    else
        echo -e "\033[31m镜像拉取失败。\033[0m"
        echo "进行第二次尝试..."
        if docker pull 2362400196/espai:latest; then
            echo -e "\033[32m第二次尝试镜像拉取成功。\033[0m"
        else
            echo -e "\033[31m第二次尝试镜像拉取也失败了。\033[0m"
            exit 1
        fi
    fi
}
remove_container() {
    if docker ps -a | grep "esp-ai"; then
        echo "正在删除已存在的名为 esp-ai 的容器..."
        docker rm -f esp-ai
    fi
}

start_container() {
    echo -e "\033[32m开始启动容器。\033[0m"
    docker create --name esp-ai -p "${external_port}:8088" 2362400196/espai:latest node /opt/espai/index.js
    docker cp ../index.js esp-ai:/opt/espai/index.js
    docker start esp-ai
    clear
    echo -e "\033[32m容器启动成功。\033[0m"
    echo -e "\033[32m请在ESP32上配置你的ip和端口\033[0m"
    echo -e "\033[32m----------------------------------------------------\033[0m"
    
    # 使用反引号或$()来捕获命令输出
    ip_address=$(curl -s ifconfig.me)
    echo ""
    echo -e "\033[32mIP地址: $ip_address\033[0m"
    echo -e "\033[32m端 口:${external_port}\033[0m"
    echo ""
    echo -e "\033[32m----------------------------------------------------\033[0m"
}